/*
 * GameStateController.h
 *
 *  Created on: Dec 26, 2011
 *      Author: rudi
 */

#ifndef GAMESTATECONTROLLER_H_
#define GAMESTATECONTROLLER_H_
#include "IController.h"

class wxSocketEvent;

/**
 * Base interface for every game state controller
 *
 * @see IController
 * @see ClientStartingGameStateController
 * @see GameFinishedGameStateController
 * @see GameStartedGameController
 * @see GameStartedSubStateController
 * @see IdleGameStateController
 * @see LevelDownloadingGameStateController
 * @see LevelUploadingGameStateController
 * @see ServerStartingGameStateController
 * @author Rudolf Heszele heszele@gmail.com
 * @version 1.0
 * @since 2012-03-08
 */
class IGameStateController: public IController
{
	public:
		IGameStateController();
		virtual ~IGameStateController();
		/**
		 * This method is supposed to handle client connections
		 *
		 * @param wxSocketEvent The event descriptor generated by wxWidgets. Containing the socket, the event happened on
		 */
		virtual void handleSocketConnection(wxSocketEvent&) = 0;
		/**
		 * This method is supposed to handle connection losts
		 *
		 * @param wxSocketEvent The event descriptor generated by wxWidgets. Containing the socket, the event happened on
		 */
		virtual void handleSocketLost(wxSocketEvent&) = 0;
		/**
		 * This method is supposed to handle available inputs on a connection (Reading data)
		 *
		 * @param wxSocketEvent The event descriptor generated by wxWidgets. Containing the socket, the event happened on
		 */
		virtual void handleSocketInput(wxSocketEvent&) = 0;
		/**
		 * This method is supposed to indicate if a connection is ready to write data to
		 *
		 * @param wxSocketEvent The event descriptor generated by wxWidgets. Containing the socket, the event happened on
		 */
		virtual void handleSocketOutput(wxSocketEvent&) = 0;
};

#endif /* GAMESTATECONTROLLER_H_ */
